
package com.nd.rj.common.util.db;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

/** 
 * @ClassName: IDataBaseRef 
 * @Description: TODO(数据库操作接口) 
 * @author Administrator
 * @date 2012-2-22 下午02:12:39 
 *
 */
public interface IDataBaseRef {

    /**
     * @Title: open  
     * @Description: TODO(打开数据库)  
     * @author Administrator
     * @date 2012-2-22 下午02:14:52 
     *
     * @param context(必传)
     * @param username(可以传空)
     * @return       
     * @return int
     * @throws
     */
    public int open(Context context, String username);

    // 执行sql语句
    public int execSql(String strSql);

    // 执行sql语句 带参数
    public int execSql(String strSql, Object[] bindArgs);

    // 查询
    public Cursor querySql(String strSql);

    // 查询带参数
    public Cursor querySql(String strSql, String[] selectionArgs);

    // 表是否存在
    public boolean tableExists(SQLiteDatabase db, String strTbl);

    // 字段是否存在
    public boolean columnExists(SQLiteDatabase db, String strTbl, String strCol);

    // 开始事务
    public void beginTransaction();

    /**
     * @Title: endTransaction  
     * @Description: TODO(结束事务(包括提交和回滚)) 
     * @author Administrator
     * @date 2012-2-22 下午02:13:11 
     *
     * @param ireturn   {=0表示提交事务  非0表示回滚}    
     * @return void
     * @throws
     */
    public void endTransaction(int ireturn);

    // 关闭
    public void close();

    // 升级
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion);

    // 插入
    public int InsertTable(String table, ContentValues values);

    // 更新
    public int UpdateTable(String table, ContentValues values, String whereClause,
            String[] whereArgs);
    
    public void onCreate(SQLiteDatabase db);
    
    public boolean DbValid();
}
